package futbol.tacticas.concursantes.LosPinzas;

import futbol.tacticas.concursantes.Tactica;
import java.awt.Color;
import java.awt.Point;
import java.util.Vector;

import futbol.General;
import futbol.tacticas.Comando;
import futbol.tacticas.ComandoGolpearBola;
import futbol.tacticas.ComandoIrA;
import futbol.tacticas.ComandoTiroAPuerta;
import futbol.tacticas.ComandoPase;
import futbol.tacticas.SituacionJugadores;

/**
 *
 * @author Angel Mari
 */
public class LosPinzas implements Tactica{
    
    /** Creates a new instance of LosPinzas */
    public LosPinzas() {
    }
     private int nValores[][] = { 
		{ -155, 0, 6 }, // Jugador 0 Portero
		{ -90, 75, 5 }, // Jugador 1 Lateral Derecho
		{ -90, -75, 5 }, // Jugador 2 Lateral Izquierdo
		{ -100, 29, 6 }, // Jugador 3 Central Derecho
		{ -100, -29, 6 }, // Jugador 4 Central Izquierdo
		{ -55, 0, 6 }, // Jugador 5 Pivote
		{ -10, 50, 5 }, // Jugador 6 Centro Derecho
		{ -10, -50, 5 }, // Jugador 7 Centro Izquierda
		{ 60, 0, 7 }, // Jugador 8 Mediapunta
		{ 80, 75, 6 }, // Jugador 9 Delantero Derecha
		{ 80, -75,6 } // Jugador 10 Delantero Izquierda
	};

	public String getNombre() {
		return "Los Pinzas";
	}
                
        public Color getColor1() {
		return Color.PINK;
	}

	public Color getColor2() {
		return Color.GREEN;
	}

	public Color getColorNumero() {
		return Color.BLACK;
	}

	public int getFuerza (int n){
            return nValores[n][2];
        }
        
        public int getXInicial (int n){
            return nValores[n][0];
        }
        
        public int getYInicial (int n){
            return nValores[n][1];
        }
        
	public Vector<Comando> getComandos(SituacionJugadores sj) {
		
                Vector<Comando> com = new Vector();
                Point misjugadores[]=sj.getMisJugadores();
                Point susjugadores[]=sj.getContrario();
                Point bola=sj.getBola();
                
                //Posicionar jugadores
                for(int i=0;i<=10;i++)
                    com.add(new ComandoIrA(i, nValores[i][0], nValores[i][1]));
               
                 //Saque de centro 
                if ((bola.getX()==0)&&(bola.getY()==0))
                    com.add(new ComandoTiroAPuerta(10,0));    
                
                //Movimiento portero
                int y=(int)(bola.getY());
                if (y<-25) y=-25;
                if (y>25) y=25;
                double portX=nValores[0][0];
                if (bola.getX()<-140)
                    portX=bola.getX();
                com.add(new ComandoIrA(0,portX, y));
                
                //Pase del portero
                if (misjugadores[0].getY()>=0)
                   com.add(new ComandoGolpearBola(0,-20,120));
                else  com.add(new ComandoGolpearBola(0,-20,-120));
                
                
                //Jugador mas cercano va a por la bola
                int nJug=sj.getMasCercanoDeBola();
                com.add(new ComandoIrA(nJug,bola.getX(), bola.getY()));
                
               
                int cont=0;
                for (int n=1;n<11;n++)
                    if (General.getDistancia(bola.getX(),bola.getY(),nValores[n][0],nValores[n][1])<80){
                        com.add(new ComandoIrA(n, bola.getX() , bola.getY()));
                        cont++;
                        if (cont==2); break;
                    }
                                
                for (int i=1;i<8;i++)
                    com.add(new ComandoPase(i,sj.getSiguienteJugador(i)));
                
                nJug=sj.getMasCercanoDeBola();
                int desvio=0;
                if((misjugadores[nJug].getX()>=55)&&(misjugadores[nJug].getY()<90)&&(misjugadores[nJug].getY()>-90)){
                    if (bola.getY()<-30) desvio=5;
                    if (bola.getY()>30) desvio=-5;
                    com.add(new ComandoTiroAPuerta(nJug,desvio));
                }
                else 
                //Pase
                com.add(new ComandoPase(nJug,sj.getSiguienteJugador(nJug)));
                       
           
                
        return com;
        }
            
}
